package sv.gob.mh.dgii.model;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "ED_SOL_DOCIM_FUNIC", schema = "EDADEPUDOC")
public class EdSolDocimFunic implements java.io.Serializable {

	private static final long serialVersionUID = -5968315021738257491L;
	
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "iindice", column = @Column(name = "I_INDICE", nullable = false, precision = 18, scale = 0)),
			@AttributeOverride(name = "ncorrelativo", column = @Column(name = "N_CORRELATIVO", nullable = false, precision = 5, scale = 0)) })
	@NotNull
	@Valid
	private EdSolDocimFunicId id;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "I_INDICE", nullable = false, insertable = false, updatable = false)
	@NotNull
	@Valid
	private EdSolicitudCorr edSolicitudCorr;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "C_TIPO_DOCUMENTO", nullable = false)
	@NotNull
	@Valid
	private ImTipoDocum imTipoDocum;
	
	@Column(name = "N_DOCUMENTO_INI", nullable = false, precision = 10, scale = 0)
	@NotNull
	private Long ndocumentoIni;
	
	@Column(name = "N_DOCUMENTO_FIN", nullable = false, precision = 10, scale = 0)
	@NotNull
	private Long ndocumentoFin;
	
	@Column(name = "N_DOCUMENTO_ULT", nullable = false, precision = 10, scale = 0)
	@NotNull
	private Long ndocumentoUlt;
	
	@Column(name = "N_DOCUMENTO_SOL", nullable = false, precision = 10, scale = 0)
	@NotNull
	private Long ndocumentoSol;
	
	@Column(name = "M_ESTADO", nullable = false, length = 1)
	@NotNull
	@NotEmpty
	private String mestado;
	
	@Column(name = "N_SERIE_DOC", length = 14)
	private String nserieDoc;
	
	@Column(name = "N_AUTORIZA_INICIAL", precision = 10, scale = 0)
	private Long nautorizaInicial;
	
	@Column(name = "N_AUTORIZA_FINAL", precision = 10, scale = 0)
	private Long nautorizaFinal;
	
	@Column(name = "N_SERIE_DOC_ANT", length = 14)
	private String nserieDocAnt;

	public EdSolDocimFunic() {
	}

	public EdSolDocimFunic(EdSolDocimFunicId id,
			EdSolicitudCorr edSolicitudCorr, ImTipoDocum imTipoDocum,
			Long ndocumentoIni, Long ndocumentoFin, Long ndocumentoUlt,
			Long ndocumentoSol, String mestado) {
		this.id = id;
		this.edSolicitudCorr = edSolicitudCorr;
		this.imTipoDocum = imTipoDocum;
		this.ndocumentoIni = ndocumentoIni;
		this.ndocumentoFin = ndocumentoFin;
		this.ndocumentoUlt = ndocumentoUlt;
		this.ndocumentoSol = ndocumentoSol;
		this.mestado = mestado;
	}

	public EdSolDocimFunic(EdSolDocimFunicId id,
			EdSolicitudCorr edSolicitudCorr, ImTipoDocum imTipoDocum,
			Long ndocumentoIni, Long ndocumentoFin, Long ndocumentoUlt,
			Long ndocumentoSol, String mestado, String nserieDoc,
			Long nautorizaInicial, Long nautorizaFinal, String nserieDocAnt) {
		this.id = id;
		this.edSolicitudCorr = edSolicitudCorr;
		this.imTipoDocum = imTipoDocum;
		this.ndocumentoIni = ndocumentoIni;
		this.ndocumentoFin = ndocumentoFin;
		this.ndocumentoUlt = ndocumentoUlt;
		this.ndocumentoSol = ndocumentoSol;
		this.mestado = mestado;
		this.nserieDoc = nserieDoc;
		this.nautorizaInicial = nautorizaInicial;
		this.nautorizaFinal = nautorizaFinal;
		this.nserieDocAnt = nserieDocAnt;
	}

	
	public EdSolDocimFunicId getId() {
		return this.id;
	}

	public void setId(EdSolDocimFunicId id) {
		this.id = id;
	}

	
	public EdSolicitudCorr getEdSolicitudCorr() {
		return this.edSolicitudCorr;
	}

	public void setEdSolicitudCorr(EdSolicitudCorr edSolicitudCorr) {
		this.edSolicitudCorr = edSolicitudCorr;
	}

	
	public ImTipoDocum getImTipoDocum() {
		return this.imTipoDocum;
	}

	public void setImTipoDocum(ImTipoDocum imTipoDocum) {
		this.imTipoDocum = imTipoDocum;
	}

	
	public Long getNdocumentoIni() {
		return this.ndocumentoIni;
	}

	public void setNdocumentoIni(Long ndocumentoIni) {
		this.ndocumentoIni = ndocumentoIni;
	}

	
	public Long getNdocumentoFin() {
		return this.ndocumentoFin;
	}

	public void setNdocumentoFin(Long ndocumentoFin) {
		this.ndocumentoFin = ndocumentoFin;
	}

	
	public Long getNdocumentoUlt() {
		return this.ndocumentoUlt;
	}

	public void setNdocumentoUlt(Long ndocumentoUlt) {
		this.ndocumentoUlt = ndocumentoUlt;
	}

	
	public Long getNdocumentoSol() {
		return this.ndocumentoSol;
	}

	public void setNdocumentoSol(Long ndocumentoSol) {
		this.ndocumentoSol = ndocumentoSol;
	}

	
	public String getMestado() {
		return this.mestado;
	}

	public void setMestado(String mestado) {
		this.mestado = mestado;
	}

	
	public String getNserieDoc() {
		return this.nserieDoc;
	}

	public void setNserieDoc(String nserieDoc) {
		this.nserieDoc = nserieDoc;
	}

	
	public Long getNautorizaInicial() {
		return this.nautorizaInicial;
	}

	public void setNautorizaInicial(Long nautorizaInicial) {
		this.nautorizaInicial = nautorizaInicial;
	}

	
	public Long getNautorizaFinal() {
		return this.nautorizaFinal;
	}

	public void setNautorizaFinal(Long nautorizaFinal) {
		this.nautorizaFinal = nautorizaFinal;
	}

	
	public String getNserieDocAnt() {
		return this.nserieDocAnt;
	}

	public void setNserieDocAnt(String nserieDocAnt) {
		this.nserieDocAnt = nserieDocAnt;
	}

}
